import { generateCRUD } from './crudGenerator'
import { getMetadataArgsStorage } from 'typeorm'

export async function generateFromEntity(entityPath: string, name: string) {
  const entityModule = await import(entityPath)
  const entityClass = Object.values(entityModule)[0] as any

  // 从 TypeORM 的全局元数据存储中获取实体表信息
  const entityMetadata = getMetadataArgsStorage().tables.find(
    table => table.target === entityClass
  )

  if (!entityMetadata) {
    throw new Error(`❌ 无法获取实体元数据：${entityPath}`)
  }

  // 表名（若未定义则使用类名）
  const tableName = entityMetadata.name || entityClass.name.toLowerCase()
  // 类名（去掉 Entity 后缀）
  const className = entityClass.name.replace(/Entity$/, '')

  // 提取字段名
  const columns = getMetadataArgsStorage().columns
    .filter(col => col.target === entityClass)
    .map(col => col.propertyName)

  await generateCRUD({
    tableName,
    className,
    fields: columns,
    name, // 👈 新增：传入模块名
  })
}
